import { PackageConfig } from "@ap/types/config";

/**
 * 根据环境和配置文件判断当前是否为开发模式
 *
 * 此函数首先检查配置文件中是否直接定义了开发模式如果定义了，则直接返回该值
 * 如果未定义，则根据是否为服务器端环境，分别返回对应的服务器端或客户端的开发模式设置
 *
 * @param isServer 表示当前环境是否为服务器端的布尔值
 * @param arenaProFileConfig 包含 TypeScript 配置的文件对象
 * @returns 返回是否为开发模式的布尔值，如果配置中未定义则返回 undefined
 */
export function isDevelopment(
  isServer: boolean,
  arenaProFileConfig: PackageConfig["file"],
): boolean | undefined | null {
  // 检查配置文件中是否直接定义了开发模式
  if (
    arenaProFileConfig.typescript.developmentAll !== undefined &&
    arenaProFileConfig.typescript.developmentAll !== null
  ) {
    return arenaProFileConfig.typescript.developmentAll;
  }
  // 根据环境判断开发模式
  if (isServer) {
    // 服务器端环境
    return arenaProFileConfig.typescript.server.development;
  } else {
    // 客户端环境
    return arenaProFileConfig.typescript.client.development;
  }
}
